package main

import "fmt"

func main() {
	// 1、定义float类型
	// var a float32 = 3.12
	// fmt.Printf("值: %v--%f,类型: %T\n", a, a, a)
	// fmt.Println(unsafe.Sizeof(a)) // float32占用4个字节

	// var b float64 = 3.14
	// fmt.Printf("值: %v--%f,类型: %T\n", b, b, b)
	// fmt.Println(unsafe.Sizeof(b)) // float64占用8个字节

	// 2、 %f 输出float类型 %.2f 输出数据的时候保留2位小数
	// var c = 3.1415926
	// fmt.Printf("值: %v--%f--%.2f,类型: %T\n", c, c, c, c)

	// 3、64位系统中Go语言中浮点数默认是 float64
	// var d = 3.1415926
	// fmt.Printf("值: %v--%f--%.2f,类型: %T\n", d, d, d, d)

	// 4、Golang 科学计数法表示浮点类型
	// var e = 3.14e2
	// fmt.Printf("值: %v--%f--%.2f,类型: %T\n", e, e, e, e)

	// 5、浮点型精度丢失问题
	// var f = 1129.6
	// fmt.Println(f * 100) // 112959.99999999999

	// m1 := 8.2
	// m2 := 3.8
	// fmt.Println(m1 - m2) // 4.3999999999999995
	// m3 := decimal.NewFromFloat(m1).Add(decimal.NewFromFloat(m2))
	// fmt.Println(m3)

	// 6、int类型转换成float类型
	// a := 10
	// b := float64(a)
	// fmt.Printf("a的类型是：%T,b的类型是：%T\n", a, b)

	// 7、int类型转换成float类型
	// var a1 float32 = 23.5
	// a2 := float64(a1)
	// fmt.Printf("a1的类型是：%T,a2的类型是：%T\n", a1, a2)

	// 8、float类型转换成int类型
	var c1 float32 = 23.5
	c2 := int(c1)
	fmt.Printf("c2的值是：%v,c2的类型是：%T\n", c2, c2)
}
